prisma db push시 E11000 duplicate key error {prisma} {troubleshooting}
문제정의
- Prisma는 MongoDB의 partialIndex를 지원하지 않는다. Unique Index {mongodb} {prisma}#^partialindex
- 1:0..1 관계의 스키마를 모델링할 수 없다. 현재
Academy:BusinessInfo
,TicketOrder:Ticket
이 상기 다중관계를 사용하고 있으며,BusinessInfo.academyId
는 다행히도 null이 없지만Ticket.orderId
는 null이 많이 존재한다. orderId: null
인 필드를 전부 unset했으나, mongodb 상에서도 인덱스를 만들 수 없었고, 대신 partialIndex를 만들어야 한다. -- 이 작업이 Prisma는 지원하지 않아npx prisma db push
명령어를 사용할 수 없게됨.
빠른 해결
npx prisma db push
명령어를 사용하지 않고 사용. 일단 그대로 두고 쓰다가 필요한 인덱스만 직접 추가한다.
중/장기적 해결
TicketOrder:Ticket
연관관계를 뒤집는다. 즉, TicketOrder.ticketId
를 갖게 만들어 TicketOrder 테이블은 약성타입으로, Ticket은 강성타입으로 만드는 것이다. 이 방법은 추후 트랜잭션 경계를 설계할 때에도 도움이 될 것이다.